Red-Green-Refactor সাইকেল হলো Test-Driven Development (TDD) এর একটি মৌলিক অংশ, যা কোড লেখার এবং টেস্টিংয়ের মধ্যে একটি সুসংগঠিত প্রক্রিয়া তৈরি করে। এই সাইকেলটি মূলত তিনটি স্টেপে বিভক্ত:
- Red: প্রথমে একটি টেস্ট লিখুন যা পাস হবে না (অর্থাৎ, টেস্টটি ফেইল হবে)।
- Green: টেস্টটি পাস করার জন্য প্রাথমিক কোড লেখুন, যাতে টেস্টটি পাস হয়।
- Refactor: কোডটি পুনঃসংশোধন (Refactor) করুন যাতে এটি আরো পরিষ্কার, পড়তে সহজ এবং দক্ষ হয়, তবে টেস্টটি যেন আগের মতো পাস থাকে।
JasmineJS ব্যবহার করে এই সাইকেলটি ফলো করা টেস্ট-ড্রিভেন ডেভেলপমেন্ট (TDD) প্রক্রিয়ার একটি গুরুত্বপূর্ণ অংশ। নিচে এই সাইকেলটি ফলো করার জন্য প্রয়োজনীয় স্টেপগুলো বিস্তারিতভাবে দেখানো হলো।
Red-Green-Refactor সাইকেল: Step-by-Step
1. Red: টেস্ট লেখার মাধ্যমে একটি অপ্রাপ্তি তৈরি করুন
প্রথমে আপনি একটি টেস্ট লিখবেন যা আপনার কোডের বর্তমান বাস্তবায়নের জন্য উপযুক্ত নয়, অর্থাৎ, প্রথমে টেস্টটি ফেইল করবে। এই মুহূর্তে আপনি টেস্টের উদ্দেশ্য এবং আপনার কোডের সাথে সম্পর্কিত সমস্যা পরিষ্কারভাবে সংজ্ঞায়িত করবেন।
এটা হবে Red স্টেপ। আপনি যখন টেস্ট চালাবেন, তখন এটি অবশ্যই ফেইল করবে, কারণ আপনি এখনও কোডটি সম্পন্ন করেননি।
উদাহরণ:
describe("Calculator", function() {
it("should add two numbers correctly", function() {
let result = add(2, 3); // add() ফাংশন এখনো নেই, তাই টেস্টটি ফেইল হবে
expect(result).toBe(5);
});
});
এখানে:
- আমরা
add()ফাংশনটি ব্যবহার করেছি, কিন্তু এটি এখনও কোডে নেই। তাই টেস্টটি ফেইল করবে এবং Red স্টেপ শেষ হবে।
2. Green: কোড লিখে টেস্টটি পাস করুন
পরবর্তী পদক্ষেপে আপনাকে add() ফাংশনটি এমনভাবে লিখতে হবে যাতে এটি টেস্টটি পাস করে। আপনি কোডটি প্রাথমিকভাবে দ্রুত লিখে ফেলবেন যাতে টেস্টটি পাস হয়, তবে এটি এখনও আদর্শ না হতে পারে।
এটা হবে Green স্টেপ, যেখানে আপনি টেস্টটি পাস করার জন্য মৌলিক কার্যকারিতা প্রদান করবেন।
উদাহরণ:
function add(a, b) {
return a + b;
}
describe("Calculator", function() {
it("should add two numbers correctly", function() {
let result = add(2, 3);
expect(result).toBe(5); // এখন এটি পাস হবে
});
});
এখানে:
add()ফাংশনটি দ্রুত লেখার মাধ্যমে টেস্টটি পাস করানো হয়েছে।- এই স্টেপে টেস্ট পাস হওয়া নিশ্চিত করা হয়েছে, কিন্তু কোডটি এখনও অপটিমাইজ বা পরিষ্কার হয়নি।
3. Refactor: কোডটি পুনঃসংশোধন করুন
এখন আপনাকে Refactor (পুনঃসংশোধন) করতে হবে। এর মানে হল, কোডটিকে আরও পরিষ্কার, দ্রুত এবং কার্যকরী করা, তবে এটি কোনোভাবেই টেস্ট পাসের প্রক্রিয়া নষ্ট করা যাবে না। আপনি প্রাথমিক কোডটি ভালভাবে পর্যালোচনা করবেন এবং অপ্রয়োজনীয় কোড সরিয়ে ফেলবেন।
এটা হবে Refactor স্টেপ, যেখানে আপনার কোডটি অপ্টিমাইজ করা হবে।
উদাহরণ:
function add(a, b) {
return a + b; // কোডটি এখানে খুব সহজ, তবে আরও কার্যকরী কোনো পরির্বতনের প্রয়োজন হতে পারে
}
describe("Calculator", function() {
it("should add two numbers correctly", function() {
let result = add(2, 3);
expect(result).toBe(5);
});
});
এখানে:
- কোডটি এতটাই সহজ যে তেমন কোনো পরিবর্তন করা হয়নি। তবে Refactor স্টেপে যেকোনো অপটিমাইজেশন বা পরিষ্কারকরণ করা যেতে পারে।
- কোডের গুণমান এবং পঠনযোগ্যতা বাড়ানোর উদ্দেশ্য থাকে।
Red-Green-Refactor সাইকেল এর সুবিধা
Test-Driven Development (TDD) এ Red-Green-Refactor সাইকেলটি কিছু গুরুত্বপূর্ণ সুবিধা প্রদান করে:
- কোডের মান বৃদ্ধি: আপনি যখন শুধুমাত্র একটি টেস্ট পাস করার জন্য কোড লেখেন, তখন আপনি অপ্রয়োজনীয় কোড লেখা এড়িয়ে চলেন। পরবর্তীতে কোড রিফ্যাক্টরিংয়ের মাধ্যমে আরও পরিষ্কার এবং সহজ কোড তৈরি হয়।
- ত্রুটি সনাক্তকরণ দ্রুততর: শুরুতেই টেস্ট লেখার ফলে আপনার কোডের ত্রুটি দ্রুত সনাক্ত করা সম্ভব হয়, কারণ আপনি প্রতি ধাপেই টেস্টিং করছেন।
- সহজ বাগ ফিক্সিং: যখন আপনি রিফ্যাক্টরিং করেন, টেস্ট কেস আপনার সাহায্যে আসে যাতে কোডের পরিবর্তনের পরেও আপনার কোড কাজ করছে কিনা নিশ্চিত করতে পারেন।
- বিচ্ছিন্নতা এবং মডুলার কোড: TDD কোড লেখার পদ্ধতি আপনাকে ছোট ছোট অংশে কোড লিখতে উৎসাহিত করে, যার ফলে কোড আরও বিচ্ছিন্ন এবং পুনঃব্যবহারযোগ্য হয়।
Red-Green-Refactor সাইকেল ফলো করার পরবর্তী পদক্ষেপ
- যখন আপনি একটি নতুন ফিচার বা ফাংশনালিটি যুক্ত করবেন, সেই সময় প্রতিটি পদক্ষেপে Red-Green-Refactor সাইকেলটি ফলো করুন।
- ত্রুটি খুঁজে বের করার পর কোডটিকে রিফ্যাক্টর করার সময়, আপনি আরও কার্যকরী এবং দ্রুত কোড তৈরি করতে সক্ষম হবেন।
- আপনার কোডের পঠনযোগ্যতা এবং গুণমান উন্নত হবে, যার ফলে টেস্টিং এবং ফিক্সিং আরও সহজ হবে।
সারাংশ
Red-Green-Refactor সাইকেল হল Test-Driven Development (TDD) এর একটি গুরুত্বপূর্ণ অংশ, যেখানে প্রথমে একটি টেস্ট লিখে তা ফেইল করানো (Red), তারপর টেস্ট পাস করার জন্য প্রাথমিক কোড লেখা (Green), এবং শেষে কোডটি রিফ্যাক্টর করা (Refactor)। এই সাইকেলটি টেস্টিংয়ের মাধ্যমে কোড উন্নত করার একটি প্রমাণিত পদ্ধতি এবং JasmineJS এর মাধ্যমে সহজে এই সাইকেলটি ফলো করা সম্ভব। Red-Green-Refactor সাইকেল ফলো করলে কোডের গুণমান বৃদ্ধি পায় এবং ত্রুটি সমাধান দ্রুত করা যায়।
Read more